package fr.umlv.m2.uwp2011.persistence.sujet.dao;

import java.util.ArrayList;
import java.util.List;

import fr.umlv.m2.uwp2011.persistence.matiere.Matiere;
import fr.umlv.m2.uwp2011.persistence.matiere.dao.HibernateMatiereDAO;
import fr.umlv.m2.uwp2011.persistence.sujet.ITDDAO;
import fr.umlv.m2.uwp2011.persistence.sujet.Sujet;
import fr.umlv.m2.uwp2011.persistence.sujet.TD;

public class HibernateTDDAO extends HibernateSujetDAO implements ITDDAO{
	private static final HibernateMatiereDAO matiereDAO = new HibernateMatiereDAO();

	static {
		TD td;
		Long td_id;
		String type = Sujet.TD;
		
		//--------- matiere prog reseau, id 1 -----------//
		Matiere matiere = matiereDAO.findById(1L);
		
		//--------------- td with id 5 -----------//
		td_id = 5L;
		td = new TD();
		td.setId(td_id);
		td.setType(type);
		td.setMatiere(matiere);
		td.setTitre("TD 1 : initiation a la programmation reseau");
		td.setDescription("Description du TD 1 : initiation a la programmation reseau");
		allSujet.put(td_id, td);

		
		//--------------- td with id 6 -----------//
		td_id = 6L;
		td = new TD();
		td.setId(td_id);
		td.setType(type);
		td.setMatiere(matiere);
		td.setTitre("TD 2 : programmation reseau");
		td.setDescription("Description du TD 2 : programmation reseau ...");
		allSujet.put(td_id, td);

		//--------------- td with id 7 -----------//
		td_id = 7L;
		td = new TD();
		td.setId(td_id);
		td.setType(type);
		td.setMatiere(matiere);
		td.setTitre("TD 3 : programmation reseau");
		td.setDescription("Description du TD 3 : programmation reseau ...");
		allSujet.put(td_id, td);


		//--------------- td with id 8 -----------//
		td_id = 8L;
		td = new TD();
		td.setId(td_id);
		td.setType(type);
		td.setMatiere(matiere);
		td.setTitre("TD 4 : programmation reseau");
		td.setDescription("Description du TD 4 : programmation reseau ...");
		allSujet.put(td_id, td);
		
		//--------- matiere prog C, id 2 -----------//
		matiere = matiereDAO.findById(2L);
		
		td_id = 19L;
		td = new TD();
		td.setId(td_id);
		td.setType(type);
		td.setMatiere(matiere);
		td.setTitre("TD 1 : initiation a la programmation C");
		td.setDescription("Description du TD 1 : initiation a la programmation C");
		allSujet.put(td_id, td);
		
		td_id = 20L;
		td = new TD();
		td.setId(td_id);
		td.setType(type);
		td.setMatiere(matiere);
		td.setTitre("TD 2 : initiation a la programmation C");
		td.setDescription("Description du TD 2 : initiation a la programmation C");
		allSujet.put(td_id, td);
		
		td_id = 21L;
		td = new TD();
		td.setId(td_id);
		td.setType(type);
		td.setMatiere(matiere);
		td.setTitre("TD 2 : initiation a la programmation C");
		td.setDescription("Description du TD 3 : initiation a la programmation C");
		allSujet.put(td_id, td);
		
		//--------- matiere reseaux sans fil, id 3 -----------//
		matiere = matiereDAO.findById(3L);
		
		td_id = 22L;
		td = new TD();
		td.setId(td_id);
		td.setType(type);
		td.setMatiere(matiere);
		td.setTitre("TD 1 : reseaux sans fil");
		td.setDescription("Description du TD 1 : les reseaux sans fil");
		allSujet.put(td_id, td);
		
		td_id = 23L;
		td = new TD();
		td.setId(td_id);
		td.setType(type);
		td.setMatiere(matiere);
		td.setTitre("TD 2 : reseaux sans fil");
		td.setDescription("Description du TD 2 : les reseaux sans fil");
		allSujet.put(td_id, td);
		
		td_id = 24L;
		td = new TD();
		td.setId(td_id);
		td.setType(type);
		td.setMatiere(matiere);
		td.setTitre("TD 2 : reseaux sans fil");
		td.setDescription("Description du TD 3 : les reseaux sans fil");
		allSujet.put(td_id, td);
	}

	@Override
	public List<Sujet> findAll() {
		List<Sujet> list = new ArrayList<Sujet>();
		for(Sujet sujet : allSujet.values()) {
			if(Sujet.TD.equals(sujet.getType()) ) {
					list.add(sujet);
			}
		}
		return list;
	}

	@Override
	public List<Sujet> findByMatiere(Long matiere_id) {
		List<Sujet> list = new ArrayList<Sujet>();
		for(Sujet sujet : allSujet.values()) {
			if(Sujet.TD.equals(sujet.getType()) && sujet.getMatiere().getId() == matiere_id) {
				list.add(sujet);
			}
		}
		return list;
	}
}
